/*
 * MyLittleDamSimulator.h
 *
 *  Created on: 26/ott/2012
 *      Author: lordmzn
 */

#ifndef MYLITTLEDAMSIMULATOR_CPP_
#define MYLITTLEDAMSIMULATOR_CPP_
#include <vector>
#include <random>

struct DamSimParam {
	std::vector<double>::size_type horizon;
	double s0;
	double water_request;
	double liv_crit;
	double aff_mean;
	double aff_stddev;
	int RBF_N;
	int nvars;
	int nobjs;
};

class MyLittleDamSimulator {
public:
	MyLittleDamSimulator(double mean, double stddev, int l);
	~MyLittleDamSimulator();
	void runSimulation(double vars[], double objs[], DamSimParam* param);

private:
	double calcolaDecisione(double slope, double storageValue);
	double RBFs_policy(std::vector<double> input,
			std::vector<double> parameters, unsigned int N);
	void extractAfflussi(double mean, double stddev);
	std::vector<double> inflow;
	static const int MONTECARLO_NRUNS = 10;
};

#endif /* MYLITTLEDAMSIMULATOR_CPP_ */
